5장 표현식과 문
5.1 값
[!note] 값이란?
식(expression)이 평가(evaluate=해석)되어 생성된 결과이다.
예시를 보자, 10+20;
이라는 식이 있으면, 컴퓨터에서 이 식을 평가(해석)하고, 30
이라는 결과값를 내뱉는다
모든 값은 데이터 타입을 가진다. 데이터 타입에 따라 다르게 해석될 수 있다 예를 들어, 같은 0100 0001은 실수로 해석하면 65지만, 문자로 해석하면 A이다
값은 다양한 방식으로 생성할 수 있다 방식 중 하나가 리터럴을 이용하는 것이다
5.2 리터럴
[!note] 리터럴이란? 사람이 이해할 수 있는 문자 또는 약속된 기호(’ ’, ” ”, [ ], // 등) 를 사용해 값을 생성하는 표기법이다 즉, 값을 생성하기 위해 미리 약속한 표기법이다
예를 들어 65
는 단순한 숫자가 아니라 숫자 리터럴
이다
js엔진은 3라는 숫자를 보면, 이를 평가(해석)하고, 값 3을 생성하여 저장한다
즉, 값 그 자체이다
[!note] 나의 생각 표현식 안에는 리터럴이 포함될 수 있다고 생각한다
5.3 표현식
5.1 값 에서, 값이란 식(expression)이 평가(evaluate=해석)되어 생성된 결과이다. 라고 말을 했다 여기서 식은 표현식을 의미한다
즉 표현식이 평가되면 값이 생성된다 리터럴은 값으로 평가된다.
그러면 표현식도 리터럴이고, 리터럴도 표현식이다
정리하자면 값으로 평가될 수 있는 모든 문(=값이 나오는 모든 표현식)은 표현식이다
5.4 문
[!note] 문(statement)이란? 프로그램을 구성한는 기본 단위이자 최소 실행 단위이다 명령문이라고도 부른다
문의 구성
문은 여러 토큰(token)으로 구성된다
토큰이란 문법적인 의미를 가지며, 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소이다
예를 들어 let score=80+20;
에서 let, score, =, 80, +, 20 , 그리고 세미콜론; 까지 모두 문법적인 의미를 가진다
따라서 저 각각의 요소가 모두 토큰이다
문의 구분
문은 선언문, 할당문, 조건문, 반복문 등 여러 종류가 있다
5.5 세미콜론과 세미콜론 자동 삽입 기능
세미콜론은 문의 종료를 나타낸다 자바스크립트 엔진은 세미콜론을 기준으로 문을 나누어 하나씩 문을 실행한다
따라서 세미콜론이 중요하다 그런데 js 엔진에는 세미콜론 자동 삽입기능(Automatic Semicolon Insertion: ASI)가 존재한다 그래서 사실 세미콜론을 안 붙여도 코드가 돌아가기는 한다, 그런데 자기 멋대로 붙이기 때문에 원하는 대로 코드가 돌아가지 않을 수 있다
놀랍게도, 세미콜론을 붙이지 말자는 주장도 은근 있는 편이다 그러다 대세는 붙이자는 분위기 이므로, 세미콜론을 붙여서 코드를 작성하자 ^_^
5.6 표현식과 표현식이 아닌 문★
표현식 전부가 문일 수도 있고, 일부만 문일 수도 있다
var x; //값으로 평가될 수 없기에 표현식이 아니다, 그냥 문이다
1; //값이므로 문이다
1 + 2; //값이므로 문이다
x = 1 + 2; //값이므로 문이며, 완전한 표현식이다
문과 표현식을 구분하는데 있어서 약간 헷갈릴수도 있다,
구별하기 위한 팁에 대해 알아보자
표현식과 문을 구별 하는 방법
가장 기본적인 방법은 변수에 할당해보는 것이다
표현식인 문은 값으로 평가되어서, 변수에 할당할 수 있다 하지만 표현식이 아닌 문은 값으로 평가될 수 없다. 따라서 변수에 할당할 수 없다
변수에 할당 가능 -> 표현식 변수에 할당 불가 -> 표현식 아님
앞에서 활용한 예제를 다시 살펴보자
var x; //변수 선언문은 변수에 할당할 수 없다. (var y= var x 불가) 따라서 표현식이 아니다
1; // x=1 처럼 변수에 할당할 수 있다.
1 + 2; //값이므로 문이다
x = 1 + 2; //값이므로 문이며, 완전한 표현식이다